package Blog0;

class Person1 {
    private String name;
    private int age;

    public Person1() {
        System.out.println("这是一个无参构造方法");
    }

}


class Person2 {
    private String name = "你好世界";
    private int age;

    public Person2(String name) { // 创建一个有参数的构造方法
        this.name = name;
        System.out.println(this.name);
        System.out.println("这是一个有参数的构造方法");
    }
}

class Person3 {
    private String name;
    private int age;

    public Person3() {
        System.out.println("无参数的构造方法");
    }

    public Person3(String name, int age) {
        this.name = name;
        this.age = age;
        System.out.println(this.name);
        System.out.println(this.age);
        System.out.println("有两个参数 <String int> 的构造方法 ");
    }
    public Person3(String name) {
        this.name = name;
        System.out.println(this.name);
        System.out.println("有一个参数 <String> 的构造方法");
    }
}

class Person4 {
    private String name;
    private int age;

  /*  public void test(String name, int age) {
       this.name = name;
        this.age = age;
    }*/
    public void print() {
       /* System.out.println("name:"+name); // null
        System.out.println("age:"+age);   // 0*/
        this.test();
    }

    private void test() {
        System.out.println("这是一次,this.修饰方法的测试");
    }
}

class Person5 {
    private String name;
    private int age;
    public Person5() {
        this("你好世界",18);
//        this("你好世界"); // this 调用构造方法必须为第一条语句才行
    }
    public Person5(String name) {
        System.out.println(name);
    }
    public Person5(String name, int age) {
        System.out.println(name);
        System.out.println(age);
    }
}
public class Blog02 {
    public static void main(String[] args) {
        int i = 1;
        {
            System.out.println("我是方法体中的本地代码块");
        }
        if(1 == i) {
            System.out.println("我是分支结构 if中的本地代码块");
        }
        while(1 == i) {
            System.out.println("我是循环语句 while中的本地代码块");
            i++;
        }
    }

    public static void main5(String[] args) {
        Person5 person = new Person5();
    }


    public static void main4(String[] args) {
        Person4 person = new Person4();
//        person.test("Hello World",18);
        person.print();
    }


    public static void main2(String[] args) {
        Person3 person = new Person3(); // 调用一个无参数的构造方法
        Person3 person1 = new Person3("小华",18); // 调用一个有两个参数的构造方法
        Person3 person2 = new Person3("你好世界");
        System.out.println("+++++++++++++++++++++++");
        System.out.println(person2); // 哈希加密过后的地址

    }


    public static void main1(String[] args) {
//        Person person = new Person();
        /*这里我们自己已经定义了，一个有参数的构造方法，但是，并没有定义一个
        * 无参数的构造方法，所以这里报错*/

        Person2 person = new Person2("Hello World");
    }
}
